export function formatTime(timestamp) {
  // 调试日志：记录原始时间戳
  console.log('[formatTime] 原始时间戳:', timestamp, '类型:', typeof timestamp);

  if (!timestamp) {
    console.error('[formatTime] 时间戳为空');
    return '未知时间';
  }

  // 直接处理Date对象
  if (timestamp instanceof Date) {
    return formatDate(timestamp);
  }

  // 处理字符串类型的时间戳
  if (typeof timestamp === 'string') {
    // 移除可能的引号
    timestamp = timestamp.replace(/['"]/g, '').trim();
    
    // 处理ISO 8601格式 (如 2025-07-27T22:34:48.505Z)
    if (timestamp.includes('T')) {
      try {
        const date = new Date(timestamp);
        if (!isNaN(date.getTime())) {
          return formatDate(date);
        }
      } catch (e) {
        console.error('[formatTime] ISO格式解析失败:', e);
      }
    }
    
    // 尝试转换为数字
    const timestampNum = Number(timestamp);
    if (isNaN(timestampNum)) {
      console.error('[formatTime] 无法转换为数字时间戳:', timestamp);
      return '未知时间';
    }
    
    // 处理数字时间戳
    return formatNumericTimestamp(timestampNum);
  } else if (typeof timestamp === 'number') {
    return formatNumericTimestamp(timestamp);
  } else {
    console.error('[formatTime] 不支持的时间戳类型:', typeof timestamp);
    return '未知时间';
  }
}

function formatNumericTimestamp(timestampNum) {
  // 处理时间戳长度
  const timestampStr = timestampNum.toString();
  if (timestampStr.length === 10) {
    // 秒级时间戳转换为毫秒
    timestampNum *= 1000;
    console.log('[formatTime] 转换秒级时间戳为毫秒:', timestampNum);
  } else if (timestampStr.length > 13) {
    // 截断过长的毫秒级时间戳
    timestampNum = Number(timestampStr.slice(0, 13));
    console.log('[formatTime] 截断过长时间戳:', timestampNum);
  }

  // 处理毫秒部分不足三位的情况 (如 1627800249.64 -> 1627800249640)
  if (timestampStr.includes('.') && timestampStr.split('.')[1].length < 3) {
    const parts = timestampStr.split('.');
    const msPart = parts[1].padEnd(3, '0').slice(0, 3);
    timestampNum = Number(parts[0] + msPart);
    console.log('[formatTime] 补全毫秒部分:', timestampNum);
  }

  // 创建日期对象并验证
  const date = new Date(timestampNum);
  if (isNaN(date.getTime())) {
    console.error('[formatTime] 无效的时间戳:', timestampNum);
    return '未知时间';
  }

  return formatDate(date);
}

function formatDate(date) {
  const year = date.getFullYear();
  const month = String(date.getMonth() + 1).padStart(2, '0');
  const day = String(date.getDate()).padStart(2, '0');
  const hours = String(date.getHours()).padStart(2, '0');
  const minutes = String(date.getMinutes()).padStart(2, '0');
  const seconds = String(date.getSeconds()).padStart(2, '0');
  
  return `${year}/${month}/${day} ${hours}:${minutes}:${seconds}`;
}